import { Injectable } from '@angular/core';
import { _HttpClient } from '@delon/theme';
import { QueryOptions } from '../util/model/query-options';
import { Observable } from 'rxjs';
import { ApiPagedData } from '../util/model/api-paged-data';
import { MessagesDTO } from '../model/messages-dto';

@Injectable({
  providedIn: 'root',
})
export class MessagesService {
  /**
   * API的入口URL
   */
  private static URL = '/api/authority/messages';
  constructor(private http: _HttpClient) {}

  /**
   * 分页查询
   *
   * @param option 分页参数
   * @param name 企业名称
   * @param type 类型
   */
  getOnePage(option: QueryOptions, name?: string, type?: string): Observable<ApiPagedData<MessagesDTO>> {
    const params = {};
    Object.assign(params, option);
    Object.assign(params, name ? { name } : {});
    Object.assign(params, type ? { type } : {});
    return this.http.get<ApiPagedData<MessagesDTO>>(MessagesService.URL, params);
  }

  /**
   * 查询所有
   *
   * @param option 分页参数
   * @param name 企业名称
   * @param type 类型
   */
  getAll(name?: string, type?: string): Observable<Array<MessagesDTO>> {
    const params = {};
    Object.assign(params, name ? { name } : {});
    Object.assign(params, type ? { type } : {});
    return this.http.get<Array<MessagesDTO>>(`${MessagesService.URL}/all`, params);
  }

  /**
   * 删除
   *
   * @param id id
   */
  deleteById(id: string): Observable<any> {
    return this.http.delete(`${MessagesService.URL}/${id}`);
  }

  /**
   * 根据ID查找
   *
   * @param id 学校id
   */
  findById(id: string): Observable<MessagesDTO> {
    return this.http.get<MessagesDTO>(`${MessagesService.URL}/${id}`);
  }

  /**
   * 修改学校
   *
   * @param item 新增信息
   * @param id 学校id
   */
  update(item: MessagesDTO, id: string): Observable<MessagesDTO> {
    return this.http.put<MessagesDTO>(`${MessagesService.URL}/${id}`, item);
  }

  /**
   * 新建学校
   *
   * @param item 修改信息
   */
  create(item: MessagesDTO): Observable<MessagesDTO> {
    return this.http.post<MessagesDTO>(MessagesService.URL, item);
  }
}
